#include "bsp_exti.h"

void exti_init()
{
    IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18, 1);
    IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0xF080);

    // GPIO1->GDIR &= ~(1 << 18);

    gpio_pin_config_t config;
    config.direction = kGPIO_DigitalInput;
    config.interruptMode = kGPIO_IntFallingEdge;
    gpio_init(GPIO1, 18, &config);

    GIC_EnableIRQ(GPIO1_Combined_16_31_IRQn);
    system_register_irqhandler(GPIO1_Combined_16_31_IRQn, gpio1_io18_irqhanler, NULL);

    gpio_enableint(GPIO1, 18);
}

void gpio1_io18_irqhanler(unsigned int giccIar, void *param)
{
    static u8 state = 0;

    delay(30);
    if (gpio_pinread(GPIO1, 18) == 0)
    {
        state = !state;
        led_switch(LED0, state);
        // beep_switch(state);
    }

    gpio_clearintflags(GPIO1, 18);
}